Binary File Descriptor library

Binary File Descriptor library
Original author(s) Cygnus Solutions
Written in C
Type Library
License GNU General Public License

The Binary File Descriptor library (BFD) is the GNU Project's main mechanism for the portable manipulation of object files in a variety of formats. As of 2003, it supports approximately 50 file formats for some 25 processor architectures.

Contents

History

When David Henkel-Wallace of Cygnus Support proposed developing the library, as a way to open up new business opportunities for the company, Richard Stallman said (correctly) that it would be difficult; David's response was "Big F*cking Deal". This became the library name,[1] and "Binary File Descriptor" was invented later as the meaning of the letters.

Design

BFD works by presenting a common abstract view of object files. An object file has a "header" with descriptive info; a variable number of "sections" that each has a name, some attributes, and a block of data; a symbol table; relocation entries; and so forth.

Internally, BFD translates the data from the abstract view into the details of the bit/byte layout required by the target processor and file format. Its key services include handling byte order differences, such as between a little-endian host and big-endian target, correct conversion between 32-bit and 64-bit data, and details of address arithmetic specified by relocation entries.

Although BFD was originally designed to be a generic library usable by a wide variety of tools, the frequent need to tinker with the API to accommodate new systems' capabilities has tended to limit its use;[2][3][4] BFD's main clients are the GNU Assembler (GAS), GNU Linker (GLD), and other GNU Binary Utilities ("binutils") tools, and the GNU Debugger (GDB). As a result, BFD is not distributed separately, but is always included with releases of binutils and GDB. Nevertheless, BFD is a critical component in the use of GNU tools for embedded systems development.

The BFD lib can be used to read the structured data out of a core dump.

References

  1. ^ "Open Sources: Voices from the Open Source Revolution". O'Relly. January 1999. http://oreilly.com/catalog/opensources/book/tiemans.html. Retrieved 2011-11-11. "Gumby began designing the library and discussing the design with Stallman. Stallman said that the job was too difficult—it would require a complete rewrite of all the tools, and it would be too difficult to maintain. Gumby told him it wasn't such a "Big F*cking Deal" and hence named this new creation the BFD library. (We explained to our customers that BFD stood for the binary file descriptor library.)" 
  2. ^ Langasek, Steve (2005-05-22). "Re: depending on shared libbfd from binutils-dev" (in English). debian-devel mailing list. http://lists.debian.org/debian-devel/2005/05/msg01086.html. Retrieved 2011-04-03. 
  3. ^ Kuratomi, Toshio (2010-06-04). "binutils once more" (in English). Fedora-packaging mailing list. http://lists.fedoraproject.org/pipermail/packaging/2010-June/007154.html. Retrieved 2011-04-03. 
  4. ^ Taylor, Ian (2003-09-12). "Re: FreeBSD 4.6 - binutils 2.14 installs useless libbfd" (in English). binutils mailing list. http://www.sourceware.org/ml/binutils/2003-09/msg00216.html. Retrieved 2011-04-03. 

External links